<?php

class ValidadorDeFormularioDeEndereco extends Model{
	
	/*******************
	 * ATRIBUTOS 
	 *******************/
	
	private $mensagemStatus;
	private $formularioValido;
	public $camposDoFormulario;
	public $errors;
	
	/*******************
	 * CONSTRUTOR 
	 *******************/
	
	public function __construct() {
		// load database library into $this->db (can be omitted if not required)
		//parent::__construct();
		$this->mensagemStatus = "";
		$this->formularioValido = false;
		$this->errors = array();
		$this->camposDoFormulario = null;
	}
	
	/*******************
	 * METODOS 
	 *******************/	

	//Verifica se há erros em qualquer um dos campos do formulário, caso houver devolve o array de erros
	public function verificarCamposValidos(){
		$this->camposDoFormulario = Validate::factory($_POST)
		->rule('Pais', 'not_empty')
		->rule('Estado', 'not_empty')
		->rule('Cidade', 'not_empty')
		->rule('Endereco', 'not_empty')
		->rule('NumeroDaCasa', 'not_empty')
		->rule('NumeroDaCasa', 'digit')
		->rule('Complemento', 'not_empty')
		->rule('Bairro', 'not_empty')
		->rule('Cep', 'not_empty');


		if ($this->camposDoFormulario->check()){
			$this->setFormularioValido(true);
		}
		else{
			$this->setFormularioValido(false);			
			$this->setErros($this->camposDoFormulario->errors('camposDoFormularioDeFormularioDeEndereco'));
			$this->redefinirMensagensDeErro();	
			//echo '<br>';		
			//print_r($this->getErros());
		}	
		
	}
	
	private function redefinirMensagensDeErro(){
		//REDEFININDO AS MENSAGENS DE ERRO
		if (isset($this->errors['Pais'])){
			$this->errors['Pais'] = "Campo Pais tem preenchimento obrigatório";
		}
		if (isset($this->errors['Estado'])){
			$this->errors['Estado'] = "Campo Estado tem preenchimento obrigatório";
		}
		if (isset($this->errors['Cidade'])){
			$this->errors['Cidade'] = "Campo Cidade tem preenchimento obrigatório";
		}
		if (isset($this->errors['Endereco'])){
			$this->errors['Endereco'] = "Campo Endereco tem preenchimento obrigatório";
		}
		
		if (isset($this->errors['NumeroDaCasa'])){
			if(strnatcmp($this->errors['NumeroDaCasa'], "NumeroDaCasa must be a digit") == 0){
				$this->errors['NumeroDaCasa'] = "Insira somente número";
			}
			else {
				$this->errors['NumeroDaCasa'] = "Campo Número tem preenchimento obrigatório";
			}
		}
		
		if (isset($this->errors['Complemento'])){
			$this->errors['Complemento'] = "Campo Complemento tem preenchimento obrigatório";
		}
		if (isset($this->errors['Bairro'])){
			$this->errors['Bairro'] = "Campo Bairro tem preenchimento obrigatório";
		}
		if (isset($this->errors['Cep'])){
			$this->errors['Cep'] = "Campo CEP tem preenchimento obrigatório";
		}
	}



	// This might go in base Model class
	public function getFormValues() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->as_array());
	}

	// This might go in base Model class
	public function getValidationErrors() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->errors('form_errors'));
	}
	
	/*******************
	 * GETTERS/SETTERS 
	 *******************/
	
	public function isFormularioValido() {
		return $this->formularioValido;
	}
	
	public function setFormularioValido($formularioValido){
		$this->formularioValido = $formularioValido;
	}
	
	public function getErros() {
		return $this->errors;
	}
	
	public function setErros($errors){
		$this->errors = $errors;
	}
	
	public function getCamposDoFormulario() {
		return $_POST;
	}
	
	public function setCamposDoFormulario($camposDoFormulario){
		$this->camposDoFormulario = $camposDoFormulario;
	}
}
?>